package com.atguigu.lease.common.exception;

import com.atguigu.lease.common.result.Result;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;



@ControllerAdvice   //表示当前类是一个异常处理类
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class) // 表示处理什么类型的异常
    @ResponseBody // 返回响应体
    public Result error(Exception e) {
        e.printStackTrace(); // 在控制台输出异常信息
        return Result.fail(); // 将失败信息返回给前段
    }
/*
 上述代码中的关键注解的作用如下
`@ControllerAdvice`用于声明处理全局Controller方法异常的类
`@ExceptionHandler`用于声明处理异常的方法，`value`属性用于声明该方法处理的异常类型
`@ResponseBody`表示将方法的返回值作为HTTP的响应体
 */


    @ExceptionHandler(LeaseException.class)
    @ResponseBody
    public Result error(LeaseException e) {
        e.printStackTrace();
        return Result.fail(e.getCode(),e.getMessage());
    }
}
